package com.java.feature.strategy;

import java.util.function.Function;
import java.util.function.Predicate;

/**
 * 泛型方法策略类
 *
 * @author Amadeus
 * @date 2024/04/26
 */
public interface FunctionStrategy<P, T, R> {

    /**
     * Predicate是指定类型，返回boolean值的函数接口。内部提供默认实现的方法，可以组合复杂的逻辑判断(and、or、negate)
     *
     * @return {@link Predicate}<{@link P}>
     */
    Predicate<P> predicate();

    /**
     * Function 接口定义了一个操作，它接受一个输入参数并产生一个结果。
     * 它的泛型参数表示输入类型和输出类型。
     * 即 Function 接口有两个泛型类型参数:输入类型(7)和输出类(R)Function 接口中的抽象方法是 apply()，
     * 它接受一个输入参数类型为 T 的对象，并返回一个输出类型为 R 的结果。
     *
     * @return {@link Function}<{@link T},{@link R}>
     */
    Function<T, R> function();

}
